package com.common.utils.tool;

import cn.hutool.core.util.StrUtil;
import com.google.common.collect.Lists;

import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 描述：
 * 用户缓存
 * @author xianggj
 * @Date 2022/2/17 16:29
 **/
public class UserUtil {


    /**
     * 用户字段标签
     * 这类标记用户 将返回用户名 且不能通过前端参数保存此参数
     */
    public static final String USER_LABEL = "user";

    /**
     * 想不到好办法 暂时放这里
     */
    private static final Map<String, String> USER_CACHE_MAP = new ConcurrentHashMap<>();

    public static String get(String userId) {
        if (userId == null){
            return null;
        }
        return USER_CACHE_MAP.get(userId);
    }

    public static void set(String userId, String userName) {
        if (userId == null || userName == null){
            return;
        }
        USER_CACHE_MAP.put(userId, userName);
    }

    public static boolean containsKey(String value) {
        if (value == null){
            return false;
        }
        return USER_CACHE_MAP.containsKey(value);
    }

    /**
     * 模糊查询用户名
     * @param name
     * @return
     */
    public static List<String> like(String name) {
        List<String> ids = Lists.newArrayList();
        if (StrUtil.isBlank(name)){
            return Lists.newArrayList();
        }
        for (Map.Entry<String, String> entry : USER_CACHE_MAP.entrySet()){
            String value = entry.getValue();
            String id = entry.getKey();
            if (StrUtil.contains(value, name)){
                ids.add(id);
            }
        }
        return ids;
    }
}
